// 需求: 
// 1s后在控制台输出 111
// 2s后在控制台输出 222
// 3s后在控制台输出 222
// 共6s

// ps: 小回调地狱
setTimeout(() => {
  console.log(111);
  setTimeout(() => {
    console.log(222);
    setTimeout(() => {
      console.log(333);
    }, 3000);
  }, 2000);
}, 1000);

function one() {
  setTimeout(() => {
    console.log("我是1s就要输出的one函数");
    // 在这里调用第二次 没想到吧 哈哈哈哈
    iterator.next();
  }, 1000);
}

function two() {
  setTimeout(() => {
    console.log("我是2s就要输出的two函数");
    // 在这里调用第三次
    iterator.next();
  }, 2000);
}

function three() {
  setTimeout(() => {
    console.log("我是3s就要输出的three函数");
  }, 3000);
}

function* gen() {
  yield one();
  yield two();
  yield three();
}

const iterator = gen();
iterator.next();